// 轮询指令
export enum CommandType {
    debug = "F7F7&&0380010B3B587F7F", // 带调试码的轮询指令
    one = "F7F7&&0380010AFB997F7F", // 不带调试码的轮询指令只获取一组数据
    ten = "F7F7&&0380011C35187F7F" // 不带调试码的轮询指令获取十组数据
}

class AtCommand { 
    factoryType(type: string) {
       if (!CommandType[type]) throw new Error("指令不存在")
       return CommandType[type]
    }
    // 查询网关的id
    queryGatewayId() {
        return "AT+CELLID?\r\n"
    }

    // 查询终端信息
    queryTerminalInfo() {
        return "AT+DEV?\r\n"
    }

    // 版本号
    queryVersion(id: number) {
        return `AT+ATCMD=${id},AT+VER?\r\n`
    }
    // 重启设备
    reboot(id) {
        return `AT+ATCMD=${id},AT+REBOOT\r\n`
    }
    // 电路增益
    setCircuitGain(id,gain) {
        return `AT+ATCMD=${id},AT+GAIN=${gain}\r\n`
    }
    // 查询电路增益
    queryCircuitGain(id) {
        return `AT+ATCMD=${id},AT+GAIN?\r\n`
    }
    // 设备类型
    queryDeviceType(id) {
        return `AT+ATCMD=${id},AT+DTYPE?\r\n`
    }
    updateTerminal(esn: string,type: number, id: number) {
        return `AT+DEV=2,${esn},${type},${id}\r\n`
    }
    // 设置设备类型
    setDeviceType(id,type) {
        return `AT+ATCMD=${id},<AT+DTYPE=${type}>\r\n`
    }
   // 添加终端
    addTerminal(esn: string,type: number, id: number) {
        return `AT+DEV=0,${esn},${type},${id}\r\n`
    }

    // 删除终端
    deleteTerminal(id: number) {
        return `AT+DEV=1,${id}\r\n`
    }

    // 查询滤波器系数
    queryFilterCoefficient(id: number) {
        return `AT+ATCMD=${id},AT+FRAT?\r\n`
    }
    // 设置滤波器系数
    setFilterCoefficient(id: number,coefficient: string) {
        return `AT+ATCMD=${id},AT+FRAT=${coefficient}\r\n`
    }
    
    // 查询待加入的子设备ESN
    queryPendingDevices() {
        return "AT+DEV_PENDING?\r\n"
    }

    // 查询紫外的阈值
    queryUvThreshold(id: number) {
        return `AT+ATCMD=${id},AT+FATH?\r\n`
    }

    // 设置紫外的阈值
    setUvThreshold(id: number,threshold: string) {
        return `AT+ATCMD=${id},AT+FATH=${threshold}\r\n`
    }
}
export const command = new AtCommand()